from typing import Any

from mcp.types import PromptArgument
from pydantic import BaseModel, AnyUrl


# function calling
class MCPFunction(BaseModel):
    name: str # 名称,缺少则为函数名称
    function_name: str # 函数名称
    server_name: str  #服务名称
    description: str | None = None # 描述
    function_type: str  # 函数类型:tool,resource,resource template,prompt
    input_schema: dict[str, Any] | None = None #输入参数，tool类型的函数才需要
    uri: str | AnyUrl | None = None #资源uri，resource类型的函数才需要
    arguments: list[PromptArgument] | None = None #参数，prompt类型的函数才需要
    execute: Any | None = None # 执行函数,初始化设置
